
package br.com.scpe.managedbean.negocio.funcionario;

import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.com.scpe.ejb.entity.Funcionario;
import br.com.scpe.ejb.sessionBean.FuncionarioSessionBean;
import br.com.scpe.managedbean.BaseManagedBean;
import br.com.scpe.util.SCHSconstantes;

@ManagedBean
@ViewScoped
public class ListarFuncionarioManagedBean extends BaseManagedBean {
	
	@EJB
	private FuncionarioSessionBean funcionarioSessionBean;
	
	private Funcionario funcionario;
	
	private List<Funcionario> listaDeFuncionarios;
	
	private int tipoFiltro;
	
	public ListarFuncionarioManagedBean() {
		super();
	}

	@PostConstruct
	public void init() {
		Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
		funcionario = (Funcionario) requestMap.get("funcionario");
		tipoFiltro = (Integer) requestMap.get("tipoFiltro");
		listarFuncionarios();
	}
	
	public void listarFuncionarios(){
		
		switch (tipoFiltro) {
		
			case SCHSconstantes.CONSULTA_POR_NOME:
				listaDeFuncionarios = funcionarioSessionBean.consultaPorNome(funcionario.getNome());
				break;
			case SCHSconstantes.CONSULTAR_POR_EMAIL:
				listaDeFuncionarios = funcionarioSessionBean.consultaPorEmailLista(funcionario.getEmail());
				break;
			case SCHSconstantes.CONSULTAR_POR_DEPARTAMENTO:
				listaDeFuncionarios = funcionarioSessionBean.consultaPorDepartamento(funcionario.getDepartamento());
				break;
			case SCHSconstantes.CONSULTAR_POR_TODOS:
				listaDeFuncionarios = funcionarioSessionBean.consultaTodosFuncionarios();
				break;
			}
		}

	public String setRequestFuncionario() {
		Map<String,Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
		requestMap.put("funcionario", funcionario);
		requestMap.put("tipoFiltro", tipoFiltro);
		
		return SCHSconstantes.PAGINA_DETALHAR_FUNCIONARIO;
	}
	
	public String selecionarFuncionario() {
		Map<String,Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
		requestMap.put("funcionario", funcionario);
		requestMap.put("tipoFiltro", tipoFiltro);
		
		return SCHSconstantes.PAGINA_ALTERAR_FUNCIONARIO;
	}
	
	public String selecionarUsuarioExclusao() {
		Map<String,Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
		requestMap.put("funcionario", funcionario);
		requestMap.put("tipoFiltro", tipoFiltro);
		
		return SCHSconstantes.PAGINA_EXCLUIR_FUNCIONARIO;
	}
	
	public boolean verificaLista(List<Funcionario> listaDeFuncionarios){
		if(listaDeFuncionarios.isEmpty()){
			return false;
		} else {
			return true;
		}
	}
	
	public String voltarTelaConsultarUsuariosExclusao() {
		return SCHSconstantes.PAGINA_CONSULTAR_USUARIOS_EXCLUSAO;
	}
	
	public String voltarTelaConsultarUsuarios() {
		return SCHSconstantes.PAGINA_CONSULTAR_USUARIOS;
	}
	
	public String voltarTelaConsultarUsuariosAlteracao() {
		return SCHSconstantes.PAGINA_CONSULTAR_USUARIOS_ALTERACAO;
	}
	
	/*===================== GETTERS AND SETTERS ===========================*/
	
	public List<Funcionario> getListaDeFuncionarios() {
		return listaDeFuncionarios;
	}

	public void setListaDeFuncionarios(List<Funcionario> listaDeFuncionarios) {
		this.listaDeFuncionarios = listaDeFuncionarios;
	}


	public Funcionario getFuncionario() {
		return funcionario;
	}


	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public int getTipoFiltro() {
		return tipoFiltro;
	}

	public void setTipoFiltro(int tipoFiltro) {
		this.tipoFiltro = tipoFiltro;
	}
}
